/*********************************************************************
 * Interface for a class to manipulate a PQ.
 *
 * @author Duncan Buell, following GT fragments in chapter 3
**/
public interface IPQ
{
/*********************************************************************
 * Accessors.
**/
/*********************************************************************
 * Method to return the size of the <code>PQ</code>
 *
 * @return the <code>size</code>
**/
  public int getSize();

/*********************************************************************
 * General methods.
**/
/*********************************************************************
 * Method to add a record.
 * By default, this adds the record at the end of a list.
 *
 * @param newRecord the <code>ProcessRecord</code> to be added.
**/
  public void insert(ProcessRecord newRecord);

/*********************************************************************
 * Method to return the record with max priority without deleting it.
 *
 * @return the <code>ProcessRecord</code> with max priority, or null.
**/
  public ProcessRecord max();

/*********************************************************************
 * Method to remove the record with the max priority.
 *
 * @return the <code>ProcessRecord</code> that was removed, or null.
**/
  public ProcessRecord remove();

/*********************************************************************
 * Method to <code>toString</code> a complete PQ.
**/
  public String toString();

} // public interface IPQ
